Arduino - Analog read e SERIAL

Projeto 04 - Analog read e SERIAL

Neste projeto iremos trabalhar 2 funcionalidades ao mesmo tempo...Como ler uma entrada analógica e como enviar dados pela porta serial que podem ser lidos pelo seu computador caso você ligue seu arduino ao seu computador.

Anexei as duas funcionalidades porque que adianta ler a entrada analógica se não tenho onde exibir o valor obtido? Preciso de um dispositivo de exibição. O mais simples é o Monitor Serial mas depois veremos o display de LCD.

Se você esta lembrado até agora só trabalhamos com entradas digitais que só podem ter dois valores : ou zero (LOW - 0V) ou um (HIGH - 5V). Mas você sabe que no mundo temos grandezas não digitais que podem assumir centenas de valores de um mínimo a um máximo.

Projeto 04 - Lendo a porta analógica

Na primeira funcionalidade, ler a entrada analógica iremos ler a posição de um potenciometro. Isto será possível porque iremos conectar os extremos do potenciometro a GND e +5V e o pino central iremos ligar a entrada analógica. Portanto, teremos de 0 a 5V na entrada análógica.

Portanto, para esta experiência você precisará de um potenciometro ou resistor variável. Se você tiver um potenciometro multivoltas vai conseguir visualizar melhor a escala de 10 bits mas um potenciometro comum serve. Eu aconselho a colocar um resistor de 1k entre o potenciometro e a entrada analógica do Arduino (para evitar acidentes - detesto enviar GND ou +5V direto num pino de entrada de um integrado) mas é opcional.

O arduino tem 6 portas analógicas chamadas de AD0 a AD5. Note a notação diferente, D0 a D13 são as portas Digitais.

O conversor analógico do arduino tem conversores análogo-digitais de 10 bits o que faz com que ele consiga diferenciar 1024 níveis nas suas portas analógicas sendo que 0 significa 0V e 1023 significa 5V.
Isso significa que o Arduino consegue trabalhar com 'degraus' de perto de 5 mV (dividindo 5V por 1024 dá 4,152823920265781 mV), ou seja, consegue 'sentir' variações da ordem de 5 mV.

Um segredo da leitura da porta analógica é que ela é bem mais lerda que a leitura da porta serial. Então se você pretende ler 10.000 por segundo está usando o arduino no talo e dificilmente conseguirá realizar esta tarefa se houver algum processamento mais pesado ou demorado. A documentação do arduino ( veja Analog Read) ela afirma que o arduino demora 100ms para fazer uma leitura das portas analógicas. Isto praticamente nos obriga a colocar um delay de 100 ms entre cada leitura do arduino.

Projeto 04 - Enviando dados pela portal serial

Como as coisas são bem preparadas no arduino, para você enviar ou receber dados pela serial terá que fazer o seguinte :

1-Não precisa de biblioteca externa.

2-Na função setup informe a velocidade da comunicação serial : Exemplo : Serial.begin(9600);

3-As funções Serial.print e Serial.println enviam dados pela serial. A função Serial.println acrescenta um CRLF (mudança de parágrafo) após enviar os dados que você postou para serem enviados.


Esquema :


Programa :
/*
AnalogReadSerial
Lê a porta A0 e exibe o resultado no monitor serial.
Instale um Potenciometro ou trimpot +5V, GND e o Pino Central no A0 .
*/

void setup() {
    Serial.begin(9600); // inicializa a porta serial para 9600 bps:
}

// loop eterno :
void loop() {
    int sensorValue = analogRead(A0); // le a entrada analógica do pino 0
    Serial.println(sensorValue);         //exibe o resultado lido
    delay(100);                     // delay de 100 mili-segundo para efeitos de estabilidade / tempo leitura.
}


Funcionamento :

Pelo monitor serial e variando o potenciometro podemos constatar que a leitura varia de 0 a 1023 que significa 0 a 5V.